Initiating actions based on mobile device location

ABSTRACT

Aspects of the present invention disclose a method, computer program product, and system for initiating actions based on mobile device location of a user. The method includes one or more processors determining that a user is within a defined proximity to a zone within a venue, based on monitoring a computing device of the user moving through the venue. The method further includes one or more processors identifying an action associated with the zone, where the action includes performing a function of the computing device of the user. The method further includes one or more processors initiating the identified action associated with the zone on the computing device of the user.

BACKGROUND

The present invention relates generally to the field of mobile devicesand more particularly to mobile device proximity marketing.

Proximity marketing, sometimes called hyperlocal marketing, uses mobiledevice technology to send marketing messages to mobile device users whoare in close proximity to a business. The market is defined by thosewith Bluetooth or Wi-Fi technology, and the message is sent outelectronically by businesses hoping to digitally connect with nearbyconsumers.

Proximity marketing is the localized wireless distribution ofadvertising content associated with a particular place. Transmissionscan be received by individuals in that location who wish to receive thetransmissions. Distribution can be via a traditional localizedbroadcast, or more commonly is specifically targeted to devices known tobe in a particular area. Communications may be further targeted tospecific groups within a given location. Use of proximity marketinginclude distribution of media at concerts, information, gaming, socialapplications, and advertising.

SUMMARY

According to one embodiment of the present invention, a method forinitiating actions based on mobile device location of a user isprovided. The method for initiating actions based on mobile devicelocation may include one or more processors determining that a user iswithin a defined proximity to a zone within a venue, based on monitoringa computing device of the user moving through the venue. The methodfurther includes one or more processors identifying an action associatedwith the zone, wherein the action includes performing a function of thecomputing device of the user. The method further includes one or moreprocessors initiating the identified action associated with the zone onthe computing device of the user.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a functional block diagram illustrating a distributed dataprocessing environment, in accordance with an embodiment of the presentinvention.

FIG. 2 is a flowchart depicting operational steps of a program forinitiating actions based on mobile device location, in accordance withthe present invention.

FIG. 3 illustrates an example of a program for initiating actions basedon mobile device location, in accordance with an embodiment of thepresent invention.

FIG. 4 is a block diagram of components of a computer system, such asthe server computer of FIG. 1, in accordance with an embodiment of thepresent invention.

DETAILED DESCRIPTION

Example embodiments, in accordance with the present invention, will nowbe described in detail with reference to the Figures. FIG. 1 is afunctional block diagram, illustrating distributed data processingenvironment 100. Distributed data processing environment 100 includescomputing device 110 and server 120, interconnected over network 185.

Computing device 110 may be a desktop computer, a laptop computer, atablet computer, a specialized computer server, a smartphone, a wearabledevice (e.g., smart watch, personal fitness device, personal safetydevice), or any programmable computer system known in the art with aninteractive display or any other computer system known in the art. Incertain embodiments, computing device 110 represents a computer systemutilizing clustered computers and components that act as a single poolof seamless resources when accessed through network 185, as is common indata centers and with cloud computing applications. In general,computing device 110 is representative of any programmable electronicdevice or combination of programmable electronic devices capable ofexecuting machine-readable program instructions and communicating withother computer devices via a network.

In one embodiment, computing device 110 includes graphical userinterface (GUI) 130, web browser 150, storage 160, and geographicinformation system 180. In another embodiment, program 200 can beremotely hosted to another computing device accessible by network 185.The various programs on computing device 110 include web browser 150, anelectronic mail client, security software (e.g., a firewall program, ageo-locating program, an encryption program, etc.), an instant messaging(IM) application (app), and a communication (e.g., phone) application.

In one embodiment, graphical user interface 130 operates on computingdevice 110. In another embodiment, graphical user interface 130 operateson another computer in a server based setting, for example on a servercomputer (e.g., server 120). In yet another embodiment, graphical userinterface 130 operates on computing device 110 simultaneously with aserver computer interconnected through network 185. Graphical userinterface 130 may be any user interface used to access information fromcomputing device 110, such as information gathered or produced byprogram 200. Additionally, graphical user interface 130 may be any userinterface used to supply information to computing device 110, such asinformation supplied by a user to be used by program 200. In someembodiments, graphical user interface 130 may be web browser 150 used toretrieve, present, and negotiate resources from the Internet. In otherembodiments, graphical user interface 130 may be a software orapplication that enables a user at computing device 110 access tonetwork 185.

In yet another embodiment, a user of computing device 110 can interactwith graphical user interface 130 through a touch screen that performsas both an input device to a graphical user interface (GUI) and as anoutput device (i.e., an electronic display) presenting a plurality oficons associated with software applications or images depicting theexecuting software application. Optionally, a software application(e.g., a web browser) can generate graphical user interface 130operating within the GUI of computing device 110. Graphical userinterface 130 accepts input from a plurality of input/output (I/O)devices including, but not limited to, a tactile sensor interface (e.g.,a touch screen or a touchpad) referred to as a multi-touch display. AnI/O device interfacing with graphical user interface 130 may beconnected to computing device 110, which may operate utilizing wired(e.g., USB port) or wireless network communications (e.g., infrared,NFC, etc.). Computing device 110 may include components, as depicted anddescribed in further detail with respect to FIG. 4, in accordance withembodiments of the present invention.

Web browser 150 may be a generic web browser used to retrieve, present,and traverse information resources from the Internet. In someembodiments, web browser 150 may be a web browser designed for a mobiledevice. In other embodiments, web browser 150 may be a web browserdesigned for a traditional computing device, such as a desktop computer,PC, or laptop. In general, web browser 150 may be any application orsoftware that enables a user of computing device 110 to access a webpageover network 185. In the depicted environment, web browser 150 resideson computing device 110. In other embodiments, web browser 150, orsimilar web browsers, may reside on other computing devices capable ofaccessing a webpage over network 185.

Storage 160, a database, located on computing device 110, represents anytype of storage device capable of storing data that is accessed andutilized by computing device 110. In other embodiments, storage 160represents multiple storage devices within computing device 110. Storage160 stores information such as, but not limited to, account information,credentials for authentication, user preferences, lists of preferredusers, previously visited websites, history of visited Wi-Fi portals,and the history of the location of the computing device.

Geographic information system (GIS) 180 is a system designed to capture,store, manipulate, analyze, manage, and present all types of geographicdata. In general, a GIS describes any information system thatintegrates, stores, edits, analyzes, shares, and displays geographicinformation. Computing device 110 can allow server 120, through ahandshake, to remotely access GIS 180 on computing device 110. In someembodiments, GIS 180, on computing device 110, contains GPS receivers.In other embodiments, GIS 180 contains radio-frequency identification(RFID) tags. In still other embodiments, GIS 180 contains other sensorsand/or receivers used by program 200 to determine the location ofcomputing device 110. GIS 180 may utilize GPS or triangulationtechniques to determine the physical location of computing device 110.

In another example, GIS 180 may utilize a series of RFID tag readers tolocate a server with an RFID tag. GIS 180 contains a globally uniqueidentifier (GUID) that is assigned for each computing device. The GUIDcan be the media access control (MAC) address for the device. The deviceis tracked through the GUID located on GIS 180.

GIS 180 operates to enhance program 200 to increase the accuracy oramount of location-related information obtained. GIS 180 utilizes GUIDinformation, combined with a sampling of data collected by GIS 180, tomake determinations about the location of computing device 110. GIS 180may receive a series of data points collected by the GUID. GIS 180 mayuse the received data points to create a path and compare that path toGUID information corresponding to the location of the received datapoints.

Server 120 may be a desktop computer, a laptop computer, a tabletcomputer, a specialized computer server, a smartphone, or any othercomputer system known in the art. In certain embodiments, server 120represents a computer system utilizing clustered computers andcomponents that act as a single pool of seamless resources when accessedthrough network 185, as is common in data centers and with cloudcomputing applications. In general, server 120 is representative of anyprogrammable electronic device or combination of programmable electronicdevices capable of executing machine-readable program instructions andcommunicating with other computer devices via a network. In oneembodiment, server 120 includes program 200 and database 170.

In an embodiment, server 120 is capable of initiating a handshakeprocess between server 120 and computing device 110. Handshaking is anautomated process of negotiation that dynamically sets parameters of acommunications channel established between two entities before normalcommunication over the channel begins. Handshaking follows the physicalestablishment of the channel and precedes normal information transfer.Handshaking facilitates connecting heterogeneous computing systems, orequipment, over a communication channel without the need for userintervention to set parameters. In an example, server 120 initiates thehandshake process by sending a message to computing device 110indicating that server 120 wants to establish a communication channel inorder to gain access to programs, such as GIS 180, on computing device110.

Database 170 may be a repository that may be read by geographicinformation system (GIS) 180. GIS data and information, such as maps,floor plans, geographic information, location names, and otherinformation may be stored to database 170. In some embodiments, GIS 180may access and retrieve information from database 170. In otherembodiments, a program on server 120 (not shown) may prompt and updatedatabase 170 with information. The data stored to database 170 may bechanged or updated by data input by a user, such as a user with accessto server 120. In one embodiment, database 170 resides on server 120. Inother embodiments, database 170 may reside on another server, anothercomputing device, or mobile device, provided that database 170 isaccessible to GIS 180.

In general, network 185 can be any combination of connections andprotocols that will support communications among computing device 110.Network 120 can include, for example, a local area network (LAN), a widearea network (WAN), such as the Internet, a cellular network, or anycombination of the preceding, and can further include wired, wireless,and/or fiber optic connections.

In one embodiment, program 200 operates on computing device 110. Inanother embodiment, program 200 operates on another computer in a serverbased setting, for example on a server computer. In yet anotherembodiment, program 200 operates on computing device 110 simultaneouslywith a server computer interconnected through network 185. Program 200provides the capability to optimize a search engine for shopping basedon the current location of a user. Program 200 is capable of utilizingWi-Fi technology, Bluetooth, Near Field Communication tags (NFC), GlobalSystem for Mobile Communications (GSM), and Global Positioning SystemTechnology (GPS) to communicate with the computing device of a user.

In one embodiment, program 200 tracks the movement of a computing device(e.g., computing device 110) within a space or region, defined by thebeacon of a department store. The beacon is broadcasting equipment at aparticular location. The beacon sends information to the computingdevice of a receptive user, which can be text, images, audio or video toenabled computing devices within the range of the beacon.

In an example embodiment, program 200 operates as a code snippet withinone or more applications on computing device 110. Code snippets definethe scope of interactivity between the snippets and the application,(e.g., program 200 hosted by a web browser application on server 120).For example, program 200 is a function within web browser 150, and theprocesses of program 200 occur automatically (i.e., without userintervention) during operation of web browser 150 as initiated byprogram 200. The dynamic code snippet elements provide scriptingsupport. The variables enable dialog between program 200, through server120, graphical user interface 130, and web browser 150.

In one embodiment, program 200 has the ability to access computingdevice 110 to establish a two-way communication link based upon thelocation of a user within a designated zone. In this embodiment, program200 can determine and track the location of a user within defined zones.

In another embodiment, program 200 has the ability to automaticallypopulate the web browser of a user with real-time information directedto indoor navigation. In this example, program 200 can provide a userwith the location of beacons that define zones and sub zones within avenue. A beacon can include a transreceiver that transmits a wirelessbeacon signal.

FIG. 2 is a flowchart depicting the operational steps of program 200, aprogram for initiating an action in response to a user entering a zoneof a multi-zone provider, in accordance with an embodiment of thepresent invention.

In step 210, program 200 detects a signal from a zone provider. A zoneprovider is a source, or owner, of independent Wi-Fi network accesspoints, such as proximity sensors, beacons, or networks of access pointsthat are distributed in a defined space. The zone provider enablescaptive portals that dictate the usage of access credentials and consentfor all users before enabling access to the network of the zoneprovider. In one embodiment, program 200 establishes a communication,through a handshake, link with computing device 110 in response to ashopper entering a shopping environment. For example, program 200detects and grants access to the computing device 110, programs such asGIS 180 on computing device 110, within the boundaries a specifiedshopping zone. In this example, a zone is determined by a short rangewireless system that can support many computing devices. The beaconsdefine each zone and contain information specific to that zone. Inanother embodiment, program 200 detects and grants access to computingdevice 110 through detecting certain signals periodically emitted by there-use of standard access point (AP) technologies with a Captive Portal.In yet another embodiment, program 200 detects and grants access tocomputing device 110 through the use of antennas. In this example, azone provider uses antennas for the detection of signals in the 2.4 or 5GHz frequency bands and places the antennas within a bounded space inorder to maximize the number of computing devices detected. The antennasare positioned in areas to analyze all signals detected within the bandsused by Wi-Fi.

In step 220, program 200 initiates tracking of a computing device. Inone embodiment, program 200 initiates the tracking of computing device110 through accessing GIS 180 on computing device 110. The GIS containssensors and/or receivers that program 200 utilizes to determine thelocation of computing device 110. In an example, program 200 accessesGIS 180, through a handshake, to utilize GPS or triangulation techniquesto determine, and update, the physical location of computing device 110within the zone. In this example, program 200 temporarily registers thecomputing device of a user to constantly provide and receive feedback onthe location of the user real time. In another embodiment, program 200,through GIS 180, analyzes the movement pattern of computing device 110to plot and estimate the probability and expected time of arrival (ETA)that a user will reach a zone. In one embodiment, program 200, viaserver 120, issues a wireless tag to computing device 110 and receivesfeedback from GIS 180 of computing device 110.

Program 200 analyzes computing device 110, and multiple computingdevices present in the zone, in terms of arrival time, length of visitper zone, paths of movement, and general traffic flow. Program 200 candetect the present physical location of one or more computing devices,such as computing device 110, within the venue based on data receivedfrom beacons in the venue. For example, based on the determined orestimated distance of the computing device from one beacon to adifferent strategically placed beacon, program 200 can determine andcontinuously update a corresponding location of the computing device inthe venue. In another embodiment, program 200 can receive GPSinformation from GIS 180 of computing device 110 to determine andcontinuously update the computing device's location within a subzone orzone.

FIG. 3 illustrates an example of program 200 operating in an environmentand performing an action in response to the user entering a multi-zoneprovider, in accordance with an embodiment of the present invention. Inthis embodiment, program 200 operates on server 120 and monitors zoneboundaries 305, 310, and 312, defined by beacon 302 and 303, to provideinformation 308, 313, and 318 to the computing devices of users.Information 308, 313, and 318 can include preloaded websites, programs,or closely associated websites.

In step 230, program 200 determines that the user is in definedproximity to a zone. In an embodiment, program 200, as discussed in step220, accesses sub program GIS 180 to analyze the movement pattern ofcomputing device 110 to plot and estimate the probability and expectedtime of arrival (ETA) that a user will reach a defined proximity to azone. In this embodiment, program 200 detects the present physicallocation of one or more computing devices, such as computing device 110,within the venue based on feedback received from beacons in the venue.Program 200 determines and continuously updates a corresponding locationof the computing device in the venue, based on the determined, orestimated, proximity of the computing device from one beacon to adifferent strategically placed beacon. In another embodiment, program200 receives GPS information, from GIS 180 of computing device 110, todetermine and continuously update the computing device's location withina subzone or zone.

In an example, program 200, based on user preferences stored on database170, accesses database 170 and receives an indication that a user is inproximity of one, or multiple zones, when the user is within 25 feet ofproximity of one or more zones.

In another example embodiment, the proximity is defined as the user isentering the zone. In this example, program 200, via server 120,receives information that the user has crossed a zone boundary from thestrategically placed beacons in the zone. As discussed in step 220,program 200 determines that computing device 110, and the user, haveentered the zone and initiates the tracking of computing device 110through accessing GIS 180. The GIS contains other sensors and/orreceivers used by program 200 to determine the location of computingdevice 110. In this example, program 200 accesses GIS 180 to utilize GPSor triangulation techniques to determine, and update, the physicallocation of computing device 110 within a zone. Program 200 can alsodetermine, or estimate, and continuously update the location of thecomputing device based upon monitoring changes in the strength of thesignal received by the beacon.

As depicted in FIG. 3, program 200 uses GPS information, from GIS 180 ofcomputing device 110, to determine that computing device 110 is locatedwithin zone boundary 305, 310, or 312. Program 200 accesses GIS 180 toutilize GPS or triangulation techniques to determine, and update, thephysical location of computing device 110 within a zone. In thisexample, program 200 temporarily registers the computing device of auser to constantly provide and receive feedback on the location of theuser real time as the user moves through the zone as defined by zoneboundaries 305, 310, and 312. In another embodiment of FIG. 3, program200 utilizes beacons 302 and 303 to determine the location of computingdevice 110 based upon the proximity of computing device 110 to beacons302 and/or 303. Program 200 determines that computing device 110 iswithin a zone boundary, defined by zone boundaries 305, 310, and 312,based upon received location information associated with computingdevice 110 from beacons 302 and 303.

In decision step 240, program 200 determines whether an actionassociated with the zone boundary is identified. In one embodiment,program 200 determines (from step 230) that the computing device 110,and by inference a user, has entered a zone boundary based on a feedbackloop established between program 200 querying GIS 180, on computingdevice 110, and grants network access credentials to the computingdevice upon entry into the zone boundary. Program 200 determines whetheran action is associated with a zone boundary based on accessing database170, on server 120, and accessing storage 160, on computing device 110to determine if metadata in database 170 indicates that the zoneincludes content of interest to the user, based on user preferenceslocated on storage 160. Program 200 analyzes information, and metadata,stored on database 170 to determine whether the zone boundary includescontent of interest to a user in the zone boundary. Further, program 200determines whether storage 160 includes an indication of an action thatis associated with the zone boundary and/or the content of interest tothe user in the zone.

In an example, with regard to FIG. 3, a user enters zone boundary 310(determined in step 230), which is defined by beacons 302 and 303.Computing device 110, of the user, includes an action (stored in storage160) associated with information 313. Program 200 is capable ofinitiating actions, which are associated with content within a zone(e.g., information 313), such as activating or deactivating a computingdevice; activating or deactivating an application located on a computingdevice; downloading and installing an application to a computing device;activating or deactivating a security protocol on a computing device.

In an example, program 200 is capable of performing actions, such as:delivering geographical location data to a fast food outlet so the foodoutlet can start preparing food for a customer so that the food is readyjust as the customer arrives to collect, or a use locational dataprovided by program 200 to improve the efficiency of warehouse processesto collect locational data from its delivery vehicles to ensure thatgoods are removed from storage and made ready for collection.

In this example, program 200 identifies a corresponding action toperform, the identified action including activating a mobile applicationdirected to a promotional item based upon program 200 establishing afeedback loop between storage 160, on computing device 110, and database170, on server 120. Program 200 identifies the corresponding action bydetermining that information, or metadata on computing device 110,matches, or is closely related to information, or metadata on database170.

In another embodiment, program 200 analyzes and juxtaposes informationor metadata, from storage 160, on computing device 110, and database170, on server 120, and does not identify an action associated with thezone. In this example, program 200 does not identify an actionassociated with the zone based upon the lack information, or metadata,of interest to the user based on user preferences. In response todetermining that an action associated with the zone is not identified(decision step 240, “no” branch), program 200 searches for analternative relevant action (step 250).

A relevant action is an operation that is closely connected to thecontent that is particular to the zone boundary and can be performed bythe computing device. In these embodiments, program 200 searches for anaction closely related to the zone that the computing device of the useris occupying.

In step 250, program 200 searches for a relevant action (decision step240, “no” branch). In this example, the user has crossed into zoneboundary 305, and program 200 has failed to identify an actionassociated with the zone boundary. As discussed in decision step 240,program 200 searches for a relevant action in response to determiningthat storage 160 does not include an action associated with the zoneboundary (e.g., an action associated with zone boundary 305, as definedby beacon 302). In an example embodiment, database 170 includes anindication that information 308 is associated with a relevant action ofactivating a program to query the computing device of the user topresent a website preloaded to the computing device of the user.

In step 260, program 200 initiates the action associated with the zone.In response to identifying an action associated with the zone (decisionstep 240, “yes” branch), program 200 initiates the action associatedwith the zone. In an example embodiment, the identified action isactivating a mobile application on computing device 110, which isdirected to a promotional item. Program 200 initiates this action byquerying a sub database to activate the application associated with thezone and zone provider on computing device 110. In this example, theapplication is capable of presenting information associated withinformation 313, including a detailed, panoramic display of the item,the key features of the item, and the promotional price of the item.Program 200 can display the program in a default device browser on thecomputing device of the user.

In an example, program 200 determines that the user has viewed apromotional item on numerous occasions, and sought to place an order forthe item which was out of stock at the time. Program 200 can provide adisplay of details that are relevant to information on the computingdevice of the user. As discussed in step 240, program 200 identifies anaction associated with the zone. In response to identifying an actionassociated with the zone, program 200 initiates the action associatedwith the zone boundary defined by beacons 302 and 303. In anotherexample, a shopper has already left the store with a purchase in hand.Program 200 reorders the website and provides a website shortcut toenable the user of the computing device to manually start a relevantwebsite without searching. Computing device of the user presents theuser with a new item arrival and a customer loyalty reward (e.g., in theform of $500).

For example, program 200, via a feedback exchange between database 170on server computer 120, and storage 160 on computing device 110, startsa mobile application and preloads a website in conjunction with thecommercial product information on database 170, and the preferences, orpast purchases of the user on storage 160, and presents the taggedmetadata of the products in the zone boundary the user enters. In thisexample, the computing device of the user preloads a website associatedwith the zone boundary that the user entered and presents information onthe website specific to shopping deals, coupons, promotional sales,newly acquired products, and information related to the newly acquiredproducts within the zone.

In another embodiment, program 200 determines that a user will enter azone based upon an analysis of the user's movement pattern inconjunction with the user's history. In an example, program 200initiates an action associated with the zone contemporaneously with theuser entering the zone based upon, as discussed in step 230, thedetermined proximity of the user to the zone, and the high probabilitythat the user will enter the zone (decision step 240, “yes” branch).Program 200 initiates the action associated with the zone, when the userenters the zone, based upon an analysis, movement pattern, prior historyof the user within the zone, and the time that program 200 calculatedthat the user will enter the zone. Program 200 generates a time untilthe user enters the zone, based on the previously discussed variables,and synchronizes initiating the action associated with the zone with theestimated time until the user reaches the zone.

FIG. 4 depicts a block diagram of components of server 120, inaccordance with an illustrative embodiment of the present invention. Itshould be appreciated that FIG. 4 provides only an illustration of oneimplementation and does not imply any limitations with regard to theenvironments in which different embodiments may be implemented. Manymodifications to the depicted environment may be made.

Server 120 includes communications fabric 402, which providescommunications between cache 416, memory 406, persistent storage 408,communications unit 410, and input/output (I/O) interface(s) 412.Communications fabric 402 can be implemented with any architecturedesigned for passing data and/or control information between processors(such as microprocessors, communications and network processors, etc.),system memory, peripheral devices, and any other hardware componentswithin a system. For example, communications fabric 402 can beimplemented with one or more buses or a crossbar switch.

Memory 406 and persistent storage 408 are computer readable storagemedia. In this embodiment, memory 406 includes random access memory(RAM). In general, memory 406 can include any suitable volatile ornon-volatile computer readable storage media. Cache 416 is a fast memorythat enhances the performance of computer processor(s) 404 by holdingrecently accessed data, and data near accessed data, from memory 406.

Program 200 may be stored in persistent storage 408 and in memory 406for execution by one or more of the respective computer processors 404via cache 416. In an embodiment, persistent storage 408 includes amagnetic hard disk drive. Alternatively, or in addition to a magnetichard disk drive, persistent storage 408 can include a solid state harddrive, a semiconductor storage device, read-only memory (ROM), erasableprogrammable read-only memory (EPROM), flash memory, or any othercomputer readable storage media that is capable of storing programinstructions or digital information.

The media used by persistent storage 408 may also be removable. Forexample, a removable hard drive may be used for persistent storage 408.Other examples include optical and magnetic disks, thumb drives, andsmart cards that are inserted into a drive for transfer onto anothercomputer readable storage medium that is also part of persistent storage408.

Communications unit 410, in these examples, provides for communicationswith other data processing systems or devices. In these examples,communications unit 410 includes one or more network interface cards.Communications unit 410 may provide communications through the use ofeither or both physical and wireless communications links. Program 200may be downloaded to persistent storage 408 through communications unit410.

I/O interface(s) 412 allows for input and output of data with otherdevices that may be connected to server 102. For example, I/O interface412 may provide a connection to external devices 418 such as a keyboard,keypad, a touch screen, and/or some other suitable input device.External devices 418 can also include portable computer readable storagemedia such as, for example, thumb drives, portable optical or magneticdisks, and memory cards. Software and data used to practice embodimentsof the present invention, e.g., program 200, can be stored on suchportable computer readable storage media and can be loaded ontopersistent storage 408 via I/O interface(s) 412. I/O interface(s) 412also connect to a display 420.

Display 420 provides a mechanism to display data to a user and may be,for example, a computer monitor.

The programs described herein are identified based upon the applicationfor which they are implemented in a specific embodiment of theinvention. However, it should be appreciated that any particular programnomenclature herein is used merely for convenience, and thus theinvention should not be limited to use solely in any specificapplication identified and/or implied by such nomenclature.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the invention.The terminology used herein was chosen to best explain the principles ofthe embodiment, the practical application or technical improvement overtechnologies found in the marketplace, or to enable others of ordinaryskill in the art to understand the embodiments disclosed herein.

What is claimed is:
 1. A method for initiating an action based on alocation of a computing device, the method comprising: determining, byone or more processors, that a user is within a defined proximity to azone within a venue, based on monitoring a computing device of the usermoving through the venue; identifying, by one or more processors,whether an action is associated with the zone, wherein the actionincludes performing a function of the computing device of the user; inresponse to determining that an action associated with the zone is notpresent, identifying, by one or more processors, a relevant action toperform on the computing device, wherein the relevant action is anoperation to perform on the computing device that is associated withcontent that is located within another zone from another zone providerand wherein the operation is identified based on user preferences; andinitiating, by one or more processors, the identified relevant action onthe computing device of the user.
 2. The method of claim 1, whereinmonitoring the computing device of the user further comprises:registering, by one or more processors, a globally unique identifier ofthe computing device of the user with a zone provider associated withthe venue, wherein the zone provider is one zone provider of a pluralityof zone providers within a venue; and updating, by one or moreprocessors, a position of the computing device of the user as the userchanges locations within the venue.
 3. The method of claim 1, furthercomprising: in response to determining that an action associated withthe zone is not present, identifying, by one or more processors, arelevant action to perform on the computing device, wherein the relevantaction further comprises, determining one or more products of interestto the user by analyzing the purchase history information of the userlocated on one or more applications.
 4. The method of claim 1 whereinidentifying whether the action is associated with the zone, furthercomprises: identifying, by one or more processors, content within thezone; and identifying, by one or more processors, an action associatedwith the identified content within the zone, wherein the identifiedaction includes initiating display of a webpage associated with theidentified content within the zone on the computing device of the user.5. The method of claim 1, wherein identifying whether the action isassociated with the zone further comprises: responsive to determiningthe computing device of the user is in proximity to a zone boundary,presenting, by one or more processors, a promotional product to theuser, wherein the promotional product is included in the identifiedcontent within the zone, and wherein presenting the promotional productincludes presenting a determined comparison of features of thepromotional product to features of products included in purchase historyinformation of the user.
 6. The method of claim 1, wherein theidentified actions are actions selected from the group consisting of:activating an e-commerce website that displays one or more productsrelated to a recently purchased product, activating a computingapplication, presenting a user with an instruction manual of therecently purchased product, automatically deactivating a computingdevice, downloading a security protocol, uploading the computingapplication to a computing device, and installing the computingapplication to the computing device.
 7. The method of claim 1, whereininitiating the identified action associated with the zone on thecomputing device of the user further comprises: estimating, by one ormore processors, a time that the user will enter the zone; andinitiating, by one or more processors, the identified action associatedwith the zone at the estimated time.
 8. A computer program product forinitiating an action based on a location of a computing device, thecomputer program product comprising: one or more computer readabletangible storage media, wherein the one or more computer readabletangible storage media are not transitory signals per se, and programinstructions stored on at least one of the one or more computer readabletangible storage media, the program instructions readable/executable byone or more computer processors and further comprising: programinstructions to determine that a user is within a defined proximity to azone within a venue, based on monitoring a computing device of the usermoving through the venue; program instructions to identify whether anaction is associated with the zone, wherein the action includesperforming a function of the computing device of the user; in responseto determining that an action associated with the zone is not present,program instructions to identify a relevant action to perform on thecomputing device, wherein the relevant action is an operation to performon the computing device that is associated with content that is locatedwithin another zone from another zone provider and wherein the operationis identified based on user preferences; and program instructions toinitiate the identified relevant action on the computing device of theuser.
 9. The computer program product of claim 8, wherein monitoring thecomputing device of the user further comprises program instructions to:register a globally unique identifier of the computing device of theuser with a zone provider associated with the venue, wherein the zoneprovider is one zone provider of a plurality of zone providers within avenue; and update a position of the computing device of the user as theuser changes locations within the venue.
 10. The computer programproduct of claim 8, further comprising program instructions, stored onthe one or more computer readable storage media, which when executed bya processor, cause the processor to: in response to determining that anaction associated with the zone is not present, identify a relevantaction to perform on the computing device, wherein the relevant actionfurther comprises, determining one or more products of interest to theuser by analyzing the purchase history information of the user locatedon one or more applications.
 11. The computer program product of claim8, wherein the program instructions to identify whether the action isassociated with the zone, further comprises program instructions to:identify content within a zone; and identify an action associated withthe identified content within the zone, wherein the identified actionincludes initiating display of a webpage associated with the identifiedcontent within the zone on the computing device of the user.
 12. Thecomputer program product of claim 8, wherein the program instructions toidentify whether the action is associated with the zone furthercomprises program instructions to: responsive to determining thecomputing device of the user is in proximity to a zone boundary, presenta promotional product to the user, wherein the promotional product isincluded in the identified content within the zone, and whereinpresenting the promotional product includes presenting the determinedcomparison of features of the promotional product to the features ofproducts included in purchase history information of the user.
 13. Thecomputer program product of claim 8, wherein the identified actions areactions selected from the group consisting of: activating an e-commercewebsite that displays one or more products related to a recentlypurchased product, activating a computing application, presenting a userwith an instruction manual of the recently purchased product,automatically deactivating a computing device, downloading a securityprotocol, uploading the computing application to a computing device, andinstalling the computing application to the computing device.
 14. Thecomputer program product of claim 8, wherein the program instructions toinitiate the identified action associated with the zone on the computingdevice of the user further comprises program instructions to: estimate atime that the user will enter the zone; and initiate the identifiedaction associated with the zone at the estimated time.
 15. A computersystem comprising: one or more computer processors; one or more computerreadable storage media; and program instructions stored on the computerreadable storage media, wherein the one or more computer readablestorage media are not transitory signals per se, for execution by atleast one of the one or more computer processors, the programinstructions comprising: program instructions to determine that a useris within a defined proximity to a zone within a venue, based onmonitoring a computing device of the user moving through the venue;program instructions to identify whether an action is associated withthe zone, wherein the action includes performing a function of thecomputing device of the user; in response to determining that an actionassociated with the zone is not present, program instructions toidentify a relevant action to perform on the computing device, whereinthe relevant action is an operation to perform on the computing devicethat is associated with content that is located within another zone fromanother zone provider and wherein the operation is identified based onuser preferences; and program instructions to initiate the identifiedrelevant action on the computing device of the user.
 16. The computersystem of claim 15, wherein monitoring the computing device of the userfurther comprises program instructions to: register a globally uniqueidentifier of the computing device of the user with a zone providerassociated with the venue, wherein the zone provider is one zoneprovider of a plurality of zone providers within a venue; and update aposition of the computing device of the user as the user changeslocations within the venue.
 17. The computer system of claim 15, furthercomprising program instructions, stored on the one or more computerreadable storage media, which when executed by a processor, cause theprocessor to: in response to determining that an action associated withthe zone is not present, identify a relevant action to perform on thecomputing device, wherein the relevant action further comprises,determining one or more products of interest to the user by analyzingthe purchase history information of the user located on one or moreapplications.
 18. The computer system of claim 15, wherein the programinstructions to identify whether the action is associated with the zone,further comprises program instructions to: identify content within azone; and identify an action associated with the identified contentwithin the zone, wherein the identified action includes initiatingdisplay of a webpage associated with the identified content within thezone on the computing device of the user.
 19. The computer system ofclaim 15, wherein the program instructions to identify whether theaction is associated with the zone further comprises programinstructions to: responsive to determining the computing device of theuser is in proximity to a zone boundary, present a promotional productto the user, wherein the promotional product is included in theidentified content within the zone, and wherein presenting thepromotional product includes presenting the determined comparison offeatures of the promotional product to the features of products includedin purchase history information of the user.
 20. The computer system ofclaim 15, wherein the identified actions are actions selected from thegroup consisting of: activating an e-commerce website that displays oneor more products related to a recently purchased product, activating acomputing application, presenting a user with an instruction manual ofthe recently purchased product, automatically deactivating a computingdevice, downloading a security protocol, uploading the computingapplication to a computing device, and installing the computingapplication to the computing device.